package cn.tedu.ykmall.admin.commodity.webapi.repository;


import cn.tedu.ykmall.pojo.commodity.entity.Category;
import cn.tedu.ykmall.pojo.commodity.vo.AdminCategoryDetailsVO;
import cn.tedu.ykmall.pojo.commodity.vo.AdminCategorySimpleListItemVO;

import java.util.List;

public interface ICategoryCacheRepository {
    /**
     *  类别数据的KEY的前缀
     */
    String KEY_CATEGORY_ITEM_PREFIX = "categories:item:";
    /**
     * 类别列表的KEY
     */
    String KEY_CATEGORY_LIST = "categories:item";

    /**
     * 判断是否存在id
     * @param id
     * @return
     */
    Boolean exists(Long id);

    /**
     * 向缓存中写入某个id对应的空数据（null），此方法主要用于解决缓存穿透问题
     * @param id
     */
    void savaEmptyValue(Long id);

    /**
     * 将类别的列表存入到Redis中
     * @param categories
     */
    void save(List<AdminCategoryDetailsVO> categories);

    /**
     * 将类别详情存入到Redis中
     * @param category
     */
    void save(AdminCategoryDetailsVO category);

    /**
     * 删除Redis中的类别列表
     * @return 成功返回true
     */
    Boolean deleteList();

    /**
     * 删除Redis中各独立存储的类别数据
     */
    void deleteAllItem();

    /**
     * 根据类别id获取类别详情
     * @param id
     * @return
     */
    AdminCategorySimpleListItemVO getCategoryById(Long id);

}
